In today's world, communications using networking architectures, such as the Internet, local area networks, or the like, has penetrated almost everybody's life. The underlying structure of such networks, typically involve client and/or server devices that may be interconnected together through switches, routers, gateways, and a variety of other forwarding devices that are arranged to assist in transferring of packets between the client and/or server devices. There are a variety of arrangements of forwarding devices that may be employed to provide for a plurality of possible different paths within or across networks over which a packet may be routed between the client and/or server devices.
Traditional networks are often configured to route packets using what is known as a distributed system model. In a distributed system model, each forwarding device within the network determines their own routing policy that is used to determine how to forward packets through the network from one location to another location. Such forwarding devices may broadcast messages or otherwise communicate with other devices within the network to provide information about their own state. State information received from other devices within the network may also be used by each device to assist them in constructing their own local view of the network.
Each of these forwarding devices may then execute a routing algorithm based on their own local view to generate a routing table that is used to determine how to route packets. In this distributed system model, while each forwarding device may receive information about other devices within the network, each forwarding device still constructs their own routing policy and related routing table independently of another forwarding device. This independent (or distributed) routing approach may sometimes result in conflicts between forwarding devices resulting in transient looping of packet forwarding. Sometimes, such looping may take considerable time to converge, resulting in delayed and/or lost packets.
Further, in some distributed system models, it may be difficult to optimize network performance over many forwarding devices, since each forwarding device ultimately modifies their routing policy independent of other forwarding devices. Such distributed system models are often non-deterministic, resulting in increases in costs to debug, and/or to manage security issues, as well as to provide for flexibility, and reliability. Distributed system models may sometimes even slow down deployment of new technologies, policies, algorithms, standards, protocols, or the like. Thus, it is with respect to these considerations and others that the present invention has been made.